package com.hzdesk.media.koreabatchmatvector.request;

/**
 * @author Mr.Lee
 * function : 请求基类
 */
public abstract class BaseRequest {

	// 请求结果
	public enum RequestResult {
		RESULT_FAIL, RESULT_SUCCESS, RESULT_NO_NET;
	}

	public interface OnResponseEventListener {
		void onResponse(BaseRequest request);
	}

	private OnResponseEventListener onResponseEventListener;

	public void setOnResponseEventListener(OnResponseEventListener responseEventListener) {
		this.onResponseEventListener = responseEventListener;
	}
	private String responseStr;

	// 获取请求body,该函数供请求执行线程调用
	public String getBody() {
		return onGetJasonBody();
	}


	// 解析服务器端的回应数据
	public void parseResult(RequestResult result) {
		if (responseStr!=null) {
			onJasonParese(responseStr);
		}
		// 将请求结果通知给调用者
		if (onResponseEventListener != null) {
			onResponseEventListener.onResponse(this);
		}
	}

	public void setResponseStr(String responseStr) {
		this.responseStr = responseStr;
	}

	//获取action名称，以下虚函数要求子类实现
	protected abstract String getActionName(); // 获取当前请求动作名称

	//当前是jason协议时的获取body函数,要求子类覆盖定义该函数
	protected String onGetJasonBody()
	{
		return null;
	}

	//当前是jason协议时解析回应函数,要求子类覆盖定义该函数
	protected void onJasonParese(String responseStr) {}



}
